import {
  INCREMENT
} from './mutations-types'


export default {
  // 方法自带state状态参数 可以把mutations中的函数看做两部分 提交时携带的参数被称为patload(载荷）
  // 1. 事件类型(increament) 2. 回调函数(state){}
  // [特殊函数定义方式]
  [INCREMENT](state) {
    state.counter++
  },
  decrement(state) {
    state.counter--
  },
  // 1. 普通提交风格 
  // incrementCount(state, count) {
  //   console.log(count)
  //   state.counter += count
  // },
  // 2. 特殊提交风格 对象
  incrementCount(state, payload) {
    console.log(payload)
    state.counter += payload.count
  },
  addStudent(state, student) {
    state.students.push(student)
  },
  updateInfo(state, payload) {
    // 无响应式：变量没有提前进行定义 无法存入到响应式系统中
    // state.info['address'] = "洛杉矶"

    // 响应式：使用Vue强行添加至响应式中
    // Vue.set(state.info, 'address', '洛杉矶')

    // 响应式：变量已经提前定义
    // state.info.name = payload.name

    // 无响应式：删除属性，属性确实删除却无法更新页面
    // delete state.info.name

    // 响应式：使用Vue删除
    // Vue.delete(state.info, 'name')

    // 在mutations中进行异步操作 可能会存在devtool工具跟踪不到的情况 官方强调不要在mutations中进行异步
    // 在mutations中的操作必须都是同步的 
    // setTimeout(() => {
    //   state.info.name = payload.name
    // }, 2000)

    // 配合异步
    state.info.name = payload
  }
}